package d7_tcp04;

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.Socket;

public class ClientReaderThread extends Thread {
    //1、定义一个变量,接收每个客户端与服务端连接的管道
    private Socket socket;

    //2、定義一个构造器,用于舒适化上面的变量
    public ClientReaderThread(Socket socket) {
        this.socket = socket;
    }

    //3、重写run()方法,声明线程要进行的事情

    @Override
    public void run() {
        //8、捕获并处理异常,用作追踪下线处理
        try {
            //4、根据客户端对象socket,获取客户端的字节输入流
            InputStream is = socket.getInputStream();
            //5、将低级的字节输入流管道,包装成高级的特殊数据输入流管道
            DataInputStream dis = new DataInputStream(is);
            //7、由于要反复的读取,客户端发送来的数据,所以套死循环

            while (true) {
                //6、然后进行读取,客户端发送过来的数据
                String message = dis.readUTF();
                //8、展示上线的每个客户端的端口与ip地址发送了什么内容
                System.out.println("您收到了:" + message);
                System.out.println("============================");
            }
        } catch (Exception e) {
            System.out.println("这个客户端下线了");
            e.printStackTrace();
        }
    }
}
